Error-correcting codes (ECCs) may be utilized to facilitate accurate data retrieval from memory devices including, for example, NAND flash memory, NOR flash memory, three dimensional crosspoint memory (3DXP), etc. The error correcting codes are configured to mitigate errors that may be caused by nonideal characteristics of the media. Error correcting codes may provide a reliability that is smaller than an Uncorrectable Bit Error Rate (UBER) of, for example, 1E-17, with an input (i.e., raw) Bit-Error Rate (RBER) of around 1E-3. This may be accomplished by encoding a sequence of K data bits into a sequence of N codeword bits that include N−K parity bits. The N bit codeword may then be stored on the media. Errors introduced by the nonideal characteristics of the media may be included in data read from the media. A decoder may be configured to recover the encoded sequences of K bits in the presence of at least some errors.
Output of the decoder includes three possible outcomes: 1) data that is corrected to the intended codeword and the decoder declares a success, 2) data that is not corrected and the decoder declares a failure, or 3) data that is decoded to an unintended codeword and the decoder declares a success. The first possible outcome is preferred. The second possible outcome is known as an “ECC fail” and may be included in the UBER. The third possible outcome is known as a “Silent Data Corruption” (SDC) or a “Miscorrect” event. An SDC event is generally undesirable.
Although the following Detailed Description will proceed with reference being made to illustrative embodiments, many alternatives, modifications, and variations thereof will be apparent to those skilled in the art.